import http from "@/request/http.js";

/**
 * 轮播图（Banner）接口请求模块
 * 对应后端接口：com.seecen.HJM.controller.BannerController
 */
const bannerApi = {
    /**
     * 1. 分页查询轮播图（支持筛选条件）
     * @param {Object} params - 查询参数（与后端 BannerDto 字段对应）
     * @param {number} params.pageNum - 当前页码（默认1）
     * @param {number} params.pageSize - 每页条数（默认10）
     * @param {number} [params.status] - 轮播图状态（可选：0=禁用，1=启用，后端枚举为准）
     * @param {string} [params.createTimeStart] - 创建时间开始（可选）
     * @param {string} [params.createTimeEnd] - 创建时间结束（可选）
     * @returns {Promise<Object>} - 响应结果（包含分页数据 PageResult<Banner>）
     */
    getBannerList: (params) => {
        return http.post('/api/banner/getBanner', params)
    },

    /**
     * 2. 新增轮播图（上传图片并创建轮播图记录）
     * @param {FormData} formData - 表单数据（含图片文件）
     * @param {File} formData.banner - 轮播图图片文件（name必须为"banner"）
     * @returns {Promise<Object>} - 响应结果（包含操作状态、提示信息）
     */
    addBanner: (formData) => {
        return http({
            url: '/api/banner/addBanner',
            method: 'POST',
            data: formData,
            headers: {
                'Content-Type': 'multipart/form-data'
            }
        })
    },

    /**
     * 3. 修改轮播图（重新上传图片替换原有轮播图）
     * @param {number|string} id - 轮播图ID
     * @param {FormData} formData - 表单数据（含新图片文件）
     * @param {File} formData.banner - 新的轮播图图片文件（name必须为"banner"）
     * @returns {Promise<Object>} - 响应结果
     */
    updateBanner: (id, formData) => {
        return http({
            url: `/api/banner/updateBanner/${id}`,
            method: 'POST',
            data: formData,
            headers: {
                'Content-Type': 'multipart/form-data'
            }
        })
    },

    /**
     * 4. 修改轮播图状态（启用/禁用）
     * @param {number|string} id - 轮播图ID
     * @param {number} status - 目标状态（0=禁用，1=启用）
     * @returns {Promise<Object>} - 响应结果
     */
    updateBannerStatus: (id, status) => {
        return http({
            url: `/api/banner/updateStatus/${id}`,
            method: 'POST',
            params: {
                status: status
            }
        })
    },

    /**
     * 5. 单个删除轮播图
     * @param {number|string} id - 轮播图ID
     * @returns {Promise<Object>} - 响应结果
     */
    deleteBanner: (id) => {
        return http({
            url: `/api/banner/deleteBanner/${id}`,
            method: 'DELETE'
        })
    },

    /**
     * 6. 批量删除轮播图
     * @param {Array<number|string>} ids - 轮播图ID数组
     * @returns {Promise<Object>} - 响应结果
     */
    batchDeleteBanner: (ids) => {
        return http({
            url: '/api/banner/deleteBannerList',
            method: 'DELETE',
            data: ids
        })
    },

    /**
     * 7. 获取启用状态的轮播图（前端展示专用）
     * @param {number|string} [count=3] - 要获取的轮播图数量（传 'ALL' 表示获取所有启用的）
     * @returns {Promise<Object>} - 响应结果（包含启用的轮播图列表）
     */
    getActiveBannerList: (count = 3) => {
        // 核心逻辑：如果传 'ALL'，则 pageSize 设为 999（足够大的数值）；否则用传入的 count
        const pageSize = count === 'ALL' ? 999 : count;
        return http.post('/api/banner/getBanner', {
            pageNum: 1,        // 固定第一页（所有数据在第一页）
            pageSize: pageSize,// 按需求设置每页条数（999 覆盖所有）
            status: 1          // 仅查询启用状态的轮播图（不变）
        })
    }
}

// 导出模块，供其他组件引入使用
export default bannerApi
